no_warns ?= n
vti_debug ?= n
vmx_panic ?= n
+vhpt_disable ?= n
xen_ia64_expose_p2m ?= y
xen_ia64_pervcpu_vhpt ?= y
xen_ia64_tlb_track ?= y
endif
ifeq ($(xen_ia64_pervcpu_vhpt),y)
CFLAGS += -DCONFIG_XEN_IA64_PERVCPU_VHPT
+ifeq ($(vhpt_disable),y)
+$(error "both xen_ia64_pervcpu_vhpt=y and vhpt_disable=y are enabled. they can't be enabled simultaneously. disable one of them.")
+endif
endif
ifeq ($(xen_ia64_tlb_track),y)
CFLAGS += -DCONFIG_XEN_IA64_TLB_TRACK
ifeq ($(no_warns),y)
CFLAGS += -Wa,--fatal-warnings -Werror -Wno-uninitialized
endif
+ifneq ($(vhpt_disable),y)
+CFLAGS += -DVHPT_ENABLED=1
+else
+CFLAGS += -DVHPT_ENABLED=0
+endif
LDFLAGS := -g
DEFINE(IA64_MCA_CPU_RBSTORE_OFFSET,
offsetof(struct ia64_mca_cpu, rbstore));
+#if VHPT_ENABLED
DEFINE(IA64_VCPU_VHPT_PAGE_OFFSET,
offsetof(struct vcpu, arch.vhpt_page));
DEFINE(IA64_VCPU_VHPT_MADDR_OFFSET,
offsetof(struct vcpu, arch.vhpt_maddr));
+#endif
BLANK();
DEFINE(IA64_MCA_TLB_INFO_SIZE, sizeof(struct ia64_mca_tlb_info));
int vcpu_late_initialise(struct vcpu *v)
{
- struct domain *d = v->domain;
int rc, order;
- if (HAS_PERVCPU_VHPT(d)) {
+ if (HAS_PERVCPU_VHPT(v->domain)) {
rc = pervcpu_vhpt_alloc(v);
if (rc != 0)
return rc;
#ifndef ASM_VHPT_H
#define ASM_VHPT_H
-#define VHPT_ENABLED 1
-
/* Size of the VHPT. */
// XXX work around to avoid trigerring xenLinux software lock up detection.
# define VHPT_SIZE_LOG2 16 // 64KB